package fuse.LaCollaFS.Metadades;



import fuse.FuseDirEnt;
import fuse.FuseStat;
import junit.framework.TestCase;

public class testDirectori extends TestCase {
	Directori dir;
	MetaDades dades = null;

	public testDirectori() {
		dir = new Directori("/",dades);

	}

	public void testEsDirectori() {

		assertTrue(dir.esDirectori());

	}

	public void testEsFitxer() {
		assertTrue(!dir.esFitxer());
	}

	public void testConstructor() {
		assertEquals(dir.getNom(), "/");
	
	}

	public void testBuit() {
		assertTrue(dir.Buit());

	}

	public void testAfegirFill() {
		Directori fill;
		fill = new Directori("pepito",dades);

		dir.AfegirFill(fill);
		assertTrue(!dir.Buit());

	}


	public void testLlistarFills(){
		Directori fill;
		FuseDirEnt llistat[];
		llistat = dir.Llistarfills();
		assertEquals(llistat.length,0);
		fill = new Directori("pepito",dades);

		dir.AfegirFill(fill);
		llistat = dir.Llistarfills();
		//System.out.println("llistat:" + llistat.length);
		assertEquals(llistat.length,1);
		FuseDirEnt dirEntry = new FuseDirEnt();
		dirEntry = new FuseDirEnt();
		dirEntry = llistat[0];
//		System.out.println(dirEntry.name);
		assertEquals(dirEntry.name,"pepito");
		FuseStat stat;
		stat = fill.getStat();
		assertEquals(dirEntry.mode,stat.mode);
		
	}

	public void testBuscarFill(){
		assertEquals(dir.BuscarFill("/pepito"),null);
		assertEquals(dir.BuscarFill("./"),dir);
		
		Directori f = new Directori("joanet",dades);
		Directori f3 = new Directori("hola",dades);
		Directori f2 = new Directori("laila",dades);
		f.AfegirFill(f2);
		dir.AfegirFill(f);
		assertEquals(dir.BuscarFill("joanet"),f);
		assertEquals(dir.BuscarFill("joanet/pepito"),null);
		assertEquals(f.BuscarFill(f.getNom()),f);
		
		Fitxer fit;
		fit = new Fitxer("hola.txt",dades);
	//	System.out.println(f.getNom()+"/"+fit.getNom());
		f3.AfegirFill(fit);
		assertEquals(f3.BuscarFill("/hola/hola.txt@1"),fit);
		assertEquals(f3.BuscarFill("/hola/hola.txt"),fit);
		assertEquals(f3.BuscarFill("/dfdf/w"),null);
		//	System.out.println("hol!!!");
	
		//System.out.println("hola "+dir.BuscarFill("joanet/laila").getNom());
		
		assertEquals(dir.BuscarFill("joanet/laila"),f2);
		assertEquals(dir.BuscarFill("joanet/laila2"),null);
		assertEquals(dir.BuscarFill("joanet/laila/gola"),null);
	}
		
	public void testgetFill(){
		Directori f;
		f= new Directori("ei",dades);
		dir.AfegirFill(f);
		assertEquals(dir.getFill("ei"),f);
		
		
	}
	
	public void testEliminarFill(){
		Directori fill;
		FuseDirEnt llistat[];
		llistat = dir.Llistarfills();
		fill = new Directori("pepito",dades);
		
		dir.AfegirFill(fill);
		llistat = dir.Llistarfills();
		assertEquals(llistat.length,1);
		dir.EliminarFill("pepito");
		assertTrue(dir.Buit());
		
	}
	
	
}
